package tedu.week02;

/**
 * <pre>
 *  数组.
 *      什么是数组.
 *      数组的使用方式.
 *      数组的声明.
 *      数组的堆栈关系
 *      数组的赋值及取值
 *      数组的排序
 *          ①数组值的转换
 *          ②冒泡排序
 *          ③快速选择排序
 *          ④插入排序
 *
 *      数组的引用传递:
 *          掌握数组的引用传递.
 *          可以使用方法接收或返回一个数组.
 *          了解Java对数组操作的支持.
 *
 *
 *          方法传递数组.
 *          方法对数组进行排序.
 *          方法对数组进行拷贝.
 *              思路:目标数组 源数组 拷备位置 拷备长度
 *
 *          掌握可变参数的使用
 *          掌握foreach输出的使用
 * </pre>
 *
 * @author : resty
 * @date : 2019年06月08日    12时
 **/
public class Week02_Array {
    public static void print(int... is){
        //foreach
        for (int i : is) {
            System.out.printf(i+"\t");
        }
        /*for (int i = 0; i < is.length; i++) {
            System.out.printf(is[i] + "\t");
        }*/
    }
    public static void main(String[] args) {
        int is [] = {123,435,646,234,54,12,7456,934};
        System.out.printf("\n不传入参数:");
        print();
        System.out.printf("\n传入一个参数:");
        print(1);
        System.out.printf("\n传入多个参数:");
        print(1,2,3,4,5,6);
        /*int ds [] = {1,2,3,4,5,6,7,8};
//        copy(ds,is,2,3);
        System.arraycopy(is,1,ds,2,3);
        for (int i = 0; i < ds.length; i++) {
            int d = ds[i];
            System.out.printf(d+"\t");
        }*/
    //④插入排序
        /*int temp;
        for (int i = 0; i < is.length; i++) {
            for (int j = 0; j < is.length; j++) {
                if (is[j]>is[i]){
                    temp = is[j];
                    is[j] = is[i];
                    is[i]=temp;
                }
            }
        for (int t : is) {
            System.out.printf(t+"\t");
        }
            System.out.println();
        }*/

    //③快速选择排序
       /* for (int i = 0; i < is.length-1; i++) {
            int f = i ;
            for (int j = i+1; j < is.length; j++) {
                if (is[j]<is[f]){
                    f = j;
                }
            }
            if(i!=f){
                int temp = is[i];
                is[i] = is[f];
                is[f] = temp;
            }
        }*/



    //②冒泡排序
        /*//这个循环是循环多少次
        for (int i = 0; i < is.length-1; i++) {
            //每循环一次就将最大值放到最后
            for (int j = 0; j < is.length-1-i; j++) {
                if (is[j]>is[j+1]){
                    int temp = is[j];
                    is[j] = is[j + 1];
                    is[j+1]=temp;
                }
                System.out.print(is[j]+"\t");
            }
            System.out.println();
        }*/

        //①两个值相互交换
        /*for (int i = 0; i < is.length-1; i++) {
            if (is[i]>is[i+1]){
                int temp = is[i];
                is[i] = is[i + 1];
                is[i+1]=temp;
            }
        }
        System.out.println("数组中最大的值是"+is[is.length-1]);*/
    }
    /**
     * 方法传递参数
     * @param ds    目标数组
     * @param os    源数组
     * @param i     从哪开始
     * @param len   长度
     */
    public static void copy(int ds[],int os[],int i ,int len){
        for (int j = 0; j < len; j++) {
            ds[i+j]=os[i+j];
        }
    }
}
